package mystudy
// 切片知识总结
import "fmt"

func DemoSlice2(){
	fmt.Println("------切片基本知识------")
	// 1.切片的定义
	//(1)空切片
	fmt.Println("------1.定义一个空切片------")
	var slice1 []int
	fmt.Println(slice1)
	//(2)定义一个初始值的切片
	fmt.Println("------2.定义一个初始值的切片------")
	slice2 := []int{1,2,33,44,55}
	fmt.Println(slice2)
	//(3)由数组转为切片
	var array1 [10]int = [10]int{1, 2, 3, 5}
	slice3 := array1[:3]
	fmt.Printf("%T, %v", slice3, slice3)
	fmt.Println()
	//(4)使用make申请空间 make(类型，长度，容量)
	slice4 := make([]int, 5, 6)
	fmt.Println("使用mak创建时的初始值slice4：",slice4)
	fmt.Printf("长度%v, 容量%v\n",len(slice4), cap(slice4))
	slice4 = []int{1,2,3}
	fmt.Printf("type:%T, value:%v\n", slice4, slice4)
	fmt.Printf("长度%v, 容量%v\n",len(slice4), cap(slice4))
	slice4[2] = 12
	slice4 = append(slice4, 88,99,100, 101)
	fmt.Println(slice4)
	fmt.Printf("长度%v, 容量%v\n",len(slice4), cap(slice4))
	slice5 := []int{1,2,3}
	var slice6 = make([]int, 2)
	copy(slice6, slice5)
	fmt.Println(slice6, slice5)
	slice6[1]=99
	fmt.Println(slice6, slice5)
	slice7 := []int{7, 77}
	slice8 := []int{8, 88}
	slice7 = append(slice7, slice8...)
	fmt.Println(slice7)
	var shuzu = [10]int{1,2,}
	fmt.Printf("数组长度%v, 数组容量%v\n",len(shuzu), cap(shuzu))
	fmt.Printf("数组长度%v, 数组容量%v\n",len(slice7), cap(slice7))
	var shuzu2 [10]int
	shuzu2 = shuzu
	shuzu2[0]= 100
	fmt.Println(shuzu2, shuzu)
	var slice9  = make([]int, 2)
	slice9 = slice7
	fmt.Println(slice9)
	// [7 77 8 88]
	slice9 = shuzu2[:]
	fmt.Println(slice9)
}